package org.javahispano.javacup.modelo;

import org.javahispano.javacup.modelo.comando.Comando;
import java.util.List;
import org.javahispano.javacup.modelo.util.Posicion;
import org.javahispano.javacup.modelo.engine.SituacionPartido;

/**Interfaz de una táctica*/
public interface Tactica {

    /**Retorna objeto TacticaDetalle 
     * que define la configuración de la táctica*/
    public TacticaDetalle getDetalle();

    /**Retorna lista de comandos
     * que los jugadores intentaran ejecutar en la siguiente iteración,
     * en base a la información entregada por la situación del partido*/
    public List<Comando> ejecutar(SituacionPartido sp);

    /**Retorna array de posiciones de los jugadores
     * cuando tu equipo inicia el juego desde el centro de la cancha*/
    public Posicion[] getPosicionSaca(SituacionPartido sp);

    /**Retorna array de posiciones de los jugadores
     * cuando el adversario inicia el juego desde el centro de la cancha*/
    public Posicion[] getPosicionRecive(SituacionPartido sp);
}
